﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ApplicationGenerator.BusinessModule.Interfaces
{
    /// <summary>
    /// Interfejs dla kolekcji elementów meta słownika
    /// </summary>
    public interface IMetaDictionaryItemCollection : IEnumerable
    {
        /// <summary>
        /// Dodaje element meta słownika do kolekcji
        /// </summary>
        /// <param name="metaDictionaryItem">Element meta słownika</param>
        void Add(IMetaDictionaryItem metaDictionaryItem);

        /// <summary>
        /// Sprawdza, czy kolekcja zawiera element meta słownika
        /// </summary>
        /// <param name="metaDictionaryItem">Element meta słownika</param>
        /// <returns>Czy kolekcja zawiera element meta słownika ?</returns>
        bool Contains(IMetaDictionaryItem metaDictionaryItem);

        /// <summary>
        /// Pobiera element meta słownika
        /// </summary>
        /// <param name="dictionaryKey">Nazwa elementu meta słownika</param>
        /// <returns>Wartość elementu meta słownika</returns>
        string this[string dictionaryKey] { get; }

        /// <summary>
        /// Pobiera nazwę elementu meta słownika na podstawie wartości
        /// </summary>
        /// <param name="dictionaryValue">Wartość elementu meta słownika</param>
        /// <returns>Nazwa elementu meta słownika</returns>
        string GetKeyByValue(string dictionaryValue);
    }
}
